package com.azxcrm.project.monitor.workflow.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.azxcrm.project.monitor.workflow.domain.WorkFlowApply;

/**
 * 审批申请 数据层
 * 
 * @author Dustyone
 * @date 2018-08-07
 */
public interface WorkFlowApplyDao 
{

	/**
     * 查询审批申请信息
     * 
     * @param id 审批申请ID
     * @return 审批申请信息
     */
	public WorkFlowApply selectWorkFlowApplyById(Integer applyId);
	
	/**
     * 查询审批申请信息
     * 
     * @param id 订单ID
     * @return 审批申请信息
     */
	public WorkFlowApply selectWorkFlowApplyOrderId(Integer orderId);
	
	/**
	 * 根据businessId查询WorkFlowApply信息
	 * @param businessId
	 * @return
	 */
	public WorkFlowApply selectWorkFlowApplyByBusinessId(String businessId);
	
	
	/**
	 * 根据businessIds集合查询WorkFlowApply信息
	 * @param businessId是
	 * @return
	 */
	public Integer[] selectWorkFlowApplyByBusinessIds(@Param("businessIds")List<String> businessIds);
	
	/**
     * 查询审批申请列表
     * 
     * @param workFlowApply 审批申请信息
     * @return 审批申请集合
     */
	public List<WorkFlowApply> selectWorkFlowApplyList(WorkFlowApply workFlowApply);
	
	/**
     * 新增审批申请
     * 
     * @param workFlowApply 审批申请信息
     * @return 结果
     */
	public int insertWorkFlowApply(WorkFlowApply workFlowApply);
	
	/**
     * 修改审批申请
     * 
     * @param workFlowApply 审批申请信息
     * @return 结果
     */
	public int updateWorkFlowApply(WorkFlowApply workFlowApply);
	
	/**
     * 删除审批申请
     * 
     * @param id 审批申请ID
     * @return 结果
     */
	public int deleteWorkFlowApplyById(Integer applyId);  
	
	/**
     * 批量删除审批申请
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	public int batchDeleteWorkFlowApply(Integer[] ids);
	
	/**
	 * 根据BusinessKey查询相应的ProcessInstance信息
	 * @param businessKey
	 * @return
	 */
	public String selectProcessInstanceIdByBizKey(String businessKey);
	
	/**
	 * 根据userId查询该用户的流程列表
	 * @param userId
	 * @return
	 */
	public List<WorkFlowApply> selectProcessTaskByUserId(Integer userId);
	
	/**
	 * 根据applyId查询审批后的详情信息
	 * @param applyId
	 * @return
	 */
	public WorkFlowApply selectWorkFlowApplyByApplyId(Integer applyId);
}